package com.wang.common.valid;


import javax.validation.Constraint;
import javax.validation.Payload;
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;

import static java.lang.annotation.RetentionPolicy.RUNTIME;

/**
 * Desc:自定义校验注解
 *
 * @author wangliuyang
 * @date
 */
@Documented
@Constraint(validatedBy = {ListValueConstraintValidator.class})    //绑定与注解对应的校验器，可以绑定多个
@Target({ElementType.METHOD, ElementType.FIELD, ElementType.ANNOTATION_TYPE, ElementType.CONSTRUCTOR, ElementType.PARAMETER, ElementType.TYPE_USE})
@Retention(value = RUNTIME)
public @interface ListValue {

    // 使用该属性去Validation.properties中取
    // 该属性值取哪里取呢？
    // common创建文件ValidationMessages.properties
    // 里面写上com.atguigu.common.valid.ListValue.message=必须提交指定的值 [0,1]

    String message() default "{com.atguigu.common.valid.ListValue.message}";

    Class<?>[] groups() default {};

    Class<? extends Payload>[] payload() default {};

    /**
     * Desc:以上三个属性为自定义校验注解必须携带属性
     *
     * @author wangliuyang
     */
    int[] value() default {};//定义校验规则的值
}
